Local-First Data Management
Local-First software aims to combine the benefits of modern cloud software (collaboration, multi-device sync) with the benefits of "plain old" local applications (data privacy/ownership, offline availability).
An example of this application model is the git version control system: Every device has its own copy of the application data and can modify this freely and without a network connection. At the same time, users can collaborate with others by merging their updates into the local copy of the data.
While local-first software offers several desirable properties, it can significantly complicate program design when compared to classic client/server cloud applications, because programmers now have to reason about a highly-concurrent system without a "single source of truth".
Goal
In this project, you will pick one of the following challenges and try to implement a prototype that explores possible solutions.
- Challenge 1: Search/Indexing
How to make non-replicated information accessible to everyone? How to scale local-first to more than what fits in memory?
- Challenge 2: Authentication, Security/Privacy
Whom to trust and how to manage access without a central authentication server? Also see the related seminar topic.
- Challenge 3: Integration with existing Cloud Services
The current web is built around service-based architecture that can still offer value for things that are hard to do locally (computation intensive tasks, large data storage). How can we integrate these services without compromising on the local-first principles?
Starting Points
- Local-first software: you own your data, in spite of the cloud, a general introduction to local-first software
- Talks about challenges and ideas: